﻿using System;
using System.Configuration;
using Medianamik.Core.Bootstrapping;

namespace Medianamik.Core.Configuration
{
    public class MedianamikConfigSection : ConfigurationSection
    {
        [ConfigurationProperty(ConfigurationPropertyName.RESOURCE_UPDATE_LIMIT, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_RESOURCE_UPDATE_LIMIT)]
        public int ResourceUpdateLimit
        {
            get { return (int)base[ConfigurationPropertyName.RESOURCE_UPDATE_LIMIT]; }
            set { base[ConfigurationPropertyName.RESOURCE_UPDATE_LIMIT] = value; }
        }
        [ConfigurationProperty(ConfigurationPropertyName.RESOURCE_UPDATE_INTERVAL, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_RESOURCE_UPDATE_INTERVAL)]
        public int ResourceUpdateInterval
        {
            get { return (int)base[ConfigurationPropertyName.RESOURCE_UPDATE_INTERVAL]; }
            set { base[ConfigurationPropertyName.RESOURCE_UPDATE_INTERVAL] = value; }
        }
        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_AUTO_RESOURCE_UPDATE, DefaultValue = false)]
        public bool EnableAutoResourceUpdate
        {
            get { return (bool)base[ConfigurationPropertyName.ENABLE_AUTO_RESOURCE_UPDATE]; }
            set { base[ConfigurationPropertyName.ENABLE_AUTO_RESOURCE_UPDATE] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_CACHE_RECYCLER, DefaultValue = false)]
        public bool EnableCacheRecycler
        {
            get { return (bool)base[ConfigurationPropertyName.ENABLE_CACHE_RECYCLER]; }
            set { base[ConfigurationPropertyName.ENABLE_CACHE_RECYCLER] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.DAL_PROVIDER, DefaultValue = ConfigurationPropertyDefaultValue.SUBSONIC_DAL_PROVIDER)]
        public string DALProvider
        {
            get { return (string)base[ConfigurationPropertyName.DAL_PROVIDER]; }
            set { base[ConfigurationPropertyName.DAL_PROVIDER] = value; }
        }

		[ConfigurationProperty(ConfigurationPropertyName.ERROR_MANAGEMENT, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_ERROR_MANAGEMENT)]
		public bool ErrorManagement
		{
			get { return (bool)base[ConfigurationPropertyName.ERROR_MANAGEMENT]; }
			set { base[ConfigurationPropertyName.ERROR_MANAGEMENT] = value; }
		}

        [ConfigurationProperty(ConfigurationPropertyName.PATH_BUILDER, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_PATH_BUILDER)]
        public string PathBuilder
        {
            get { return (string)base[ConfigurationPropertyName.PATH_BUILDER]; }
            set { base[ConfigurationPropertyName.PATH_BUILDER] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.DEFAULT_PAGE_EXTENSION, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_PAGE_EXTENSION)]
        public string DefaultPageExtension
        {
            get { return (string)base[ConfigurationPropertyName.DEFAULT_PAGE_EXTENSION]; }
            set { base[ConfigurationPropertyName.DEFAULT_PAGE_EXTENSION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.DEFAULT_EDITOR_CSS_FILE_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_CSS_FILE_PATH_VALUE)]
        public string DefaultEditorCSSFilePath
        {
            get { return (string)base[ConfigurationPropertyName.DEFAULT_EDITOR_CSS_FILE_PATH]; }
            set { base[ConfigurationPropertyName.DEFAULT_EDITOR_CSS_FILE_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_DOCUMENT_FILES_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_DOCUMENT_FILES_PATH_VALUE)]
        public string EditorDocumentFilesPath
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_DOCUMENT_FILES_PATH]; }
            set { base[ConfigurationPropertyName.EDITOR_DOCUMENT_FILES_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_FLASH_FILES_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_FLASH_FILES_PATH_VALUE)]
        public string EditorFlashFilesPath
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_FLASH_FILES_PATH]; }
            set { base[ConfigurationPropertyName.EDITOR_FLASH_FILES_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_MEDIA_FILES_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_MEDIA_FILES_PATH_VALUE)]
        public string EditorMediaFilesPath
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_MEDIA_FILES_PATH]; }
            set { base[ConfigurationPropertyName.EDITOR_MEDIA_FILES_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.PATH_PICKER_FILES_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_PATH_PICKER_FILES_PATH_VALUE)]
        public string PathPickerFilesPath
        {
            get { return (string)base[ConfigurationPropertyName.PATH_PICKER_FILES_PATH]; }
            set { base[ConfigurationPropertyName.PATH_PICKER_FILES_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.LOGIN_SUCCESS_URL, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_LOGIN_SUCCESS_URL)]
        public string LoginSuccessUrl
        {
            get { return (string)base[ConfigurationPropertyName.LOGIN_SUCCESS_URL]; }
            set { base[ConfigurationPropertyName.LOGIN_SUCCESS_URL] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_IMAGE_FILES_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_IMAGE_FILES_PATH_VALUE)]
        public string EditorImageFilesPath
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_IMAGE_FILES_PATH]; }
            set { base[ConfigurationPropertyName.EDITOR_IMAGE_FILES_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_IMAGES_FILES_EXTENSION, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_IMAGES_FILES_EXTENSION)]
        public string EditorImageFilesExtension
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_IMAGES_FILES_EXTENSION]; }
            set { base[ConfigurationPropertyName.EDITOR_IMAGES_FILES_EXTENSION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_DOCUMENT_FILES_EXTENSION, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_DOCUMENT_FILES_EXTENSION)]
        public string EditorDocumentFilesExtension
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_DOCUMENT_FILES_EXTENSION]; }
            set { base[ConfigurationPropertyName.EDITOR_DOCUMENT_FILES_EXTENSION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_FLASH_FILES_EXTENSION, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_FLASH_FILES_EXTENSION)]
        public string EditorFlashFilesExtension
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_FLASH_FILES_EXTENSION]; }
            set { base[ConfigurationPropertyName.EDITOR_FLASH_FILES_EXTENSION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_MEDIA_FILES_EXTENSION, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_EDITOR_MEDIA_FILES_EXTENSION)]
        public string EditorMediaFilesExtension
        {
            get { return (string)base[ConfigurationPropertyName.EDITOR_MEDIA_FILES_EXTENSION]; }
            set { base[ConfigurationPropertyName.EDITOR_MEDIA_FILES_EXTENSION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.IMAGEPICKER_EDITOR_WIDTH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_IMAGEPICKER_EDITOR_WIDTH)]
        public int ImagePickerEditorWidth
        {
            get { return (int)base[ConfigurationPropertyName.IMAGEPICKER_EDITOR_WIDTH]; }
            set { base[ConfigurationPropertyName.IMAGEPICKER_EDITOR_WIDTH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.IMAGEPICKER_EDITOR_HEIGHT, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_IMAGEPICKER_EDITOR_HEIGHT)]
        public int ImagePickerEditorHeight
        {
            get { return (int)base[ConfigurationPropertyName.IMAGEPICKER_EDITOR_HEIGHT]; }
            set { base[ConfigurationPropertyName.IMAGEPICKER_EDITOR_HEIGHT] = value; }
        }


        [ConfigurationProperty(ConfigurationPropertyName.IMAGEPICKER_MANAGER_HEIGHT, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_IMAGEPICKER_MANAGER_HEIGHT)]
        public int ImagePickerManagerHeight
        {
            get { return (int)base[ConfigurationPropertyName.IMAGEPICKER_MANAGER_HEIGHT]; }
            set { base[ConfigurationPropertyName.IMAGEPICKER_MANAGER_HEIGHT] = value; }
        }


        [ConfigurationProperty(ConfigurationPropertyName.IMAGEPICKER_MANAGER_WIDTH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_IMAGEPICKER_MANAGER_WIDTH)]
        public int ImagePickerManagerWidth
        {
            get { return (int)base[ConfigurationPropertyName.IMAGEPICKER_MANAGER_WIDTH]; }
            set { base[ConfigurationPropertyName.IMAGEPICKER_MANAGER_WIDTH] = value; }
        }        


        [ConfigurationProperty(ConfigurationPropertyName.CLIENT_LOGO_PATH, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_CLIENT_LOGO_PATH)]
        public string ClientLogoPath
        {
            get { return (string)base[ConfigurationPropertyName.CLIENT_LOGO_PATH]; }
            set { base[ConfigurationPropertyName.CLIENT_LOGO_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.URL_ACTION_HANDLER,
            DefaultValue = ConfigurationPropertyDefaultValue.URL_ACTION_HANDLER)]
        public string UrlActionHandler
        {
            get { return (string)base[ConfigurationPropertyName.URL_ACTION_HANDLER]; }
            set { base[ConfigurationPropertyName.URL_ACTION_HANDLER] = value; }
        }

		[ConfigurationProperty(ConfigurationPropertyName.INDEX_PATH, DefaultValue = "/Lucene")]
		public string IndexPath
		{
			get { return (string)base[ConfigurationPropertyName.INDEX_PATH]; }
			set { base[ConfigurationPropertyName.INDEX_PATH] = value; }
		}
               

        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_TABLE_GENERATOR , DefaultValue = true)]
        public bool EnableTableGenerator
        {
            get { return (bool)base[ConfigurationPropertyName.ENABLE_TABLE_GENERATOR]; }
            set { base[ConfigurationPropertyName.ENABLE_TABLE_GENERATOR] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_MULTI_LANGUAGE_FEATURES, DefaultValue = false)]
        public bool EnableMultiLanguageFeatures
        {
            get { return (bool)base[ConfigurationPropertyName.ENABLE_MULTI_LANGUAGE_FEATURES]; }
            set { base[ConfigurationPropertyName.ENABLE_MULTI_LANGUAGE_FEATURES] = value; }
        }

        #region lock

        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_LOCK, DefaultValue = true)]
        public bool EnableLock
        {
            get
            {
                return (bool)base[ConfigurationPropertyName.ENABLE_LOCK];
            }
            set { base[ConfigurationPropertyName.ENABLE_LOCK] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.ULTIMATUM_LOCK, DefaultValue = 3600)]
        public int UltimatumLock
        {
            get
            {
                return (int)base[ConfigurationPropertyName.ULTIMATUM_LOCK];
            }
            set { base[ConfigurationPropertyName.ULTIMATUM_LOCK] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.MAGIC_SCRIPTS_INDIVIDUAL_TIMEOUT, DefaultValue = 1200)]
        public int MagicScriptsIndividualTimeout
        {
            get
            {
                return (int)base[ConfigurationPropertyName.MAGIC_SCRIPTS_INDIVIDUAL_TIMEOUT];
            }
            set { base[ConfigurationPropertyName.MAGIC_SCRIPTS_INDIVIDUAL_TIMEOUT] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.MAGIC_SCRIPTS_TIMEOUT, DefaultValue = 5400)]
        public int MagicScriptsTimeout
        {
            get
            {
                return (int)base[ConfigurationPropertyName.MAGIC_SCRIPTS_TIMEOUT];
            }
            set { base[ConfigurationPropertyName.MAGIC_SCRIPTS_TIMEOUT] = value; }
        }

        #endregion

        [ConfigurationProperty(ConfigurationPropertyName.SUPPORT_MAIL_ADDRESS,DefaultValue=ConfigurationPropertyDefaultValue.SUPPORT_MAIL_ADDRESS )]   
        public string SupportMailAddress
        {
            get
            {
                return (string)base[ConfigurationPropertyName.SUPPORT_MAIL_ADDRESS]; 
            }
            set
            {
                base[ConfigurationPropertyName.SUPPORT_MAIL_ADDRESS] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.WEBSITE_FROM_MAIL_ADDRESS, DefaultValue = ConfigurationPropertyDefaultValue.WEBSITE_FROM_MAIL_ADDRESS)]
        public string WebsiteFromMailAddress
        {
            get
            {
                return (string)base[ConfigurationPropertyName.WEBSITE_FROM_MAIL_ADDRESS];
            }
            set
            {
                base[ConfigurationPropertyName.WEBSITE_FROM_MAIL_ADDRESS] = value;
            }
        }


        [ConfigurationProperty(ConfigurationPropertyName.ERROR_FROM_MAIL_ADDRESS, DefaultValue = ConfigurationPropertyDefaultValue.ERROR_FROM_MAIL_ADDRESS)]
        [Obsolete]
        public string ErrorFromMailAddress
        {
            get
            {
                return (string)base[ConfigurationPropertyName.ERROR_FROM_MAIL_ADDRESS];
            }
            set
            {
                base[ConfigurationPropertyName.ERROR_FROM_MAIL_ADDRESS] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.ERROR_TO_MAIL_ADDRESS, DefaultValue = ConfigurationPropertyDefaultValue.ERROR_TO_MAIL_ADDRESS)]
        [Obsolete]
        public string ErrorToMailAddress
        {
            get
            {
                return (string)base[ConfigurationPropertyName.ERROR_TO_MAIL_ADDRESS];
            }
            set
            {
                base[ConfigurationPropertyName.ERROR_TO_MAIL_ADDRESS] = value;
            }
        }
        [ConfigurationProperty(ConfigurationPropertyName.DEFAULT_EDITION_CULTURE_NAME, DefaultValue = "fr-CA")]
        public string DefaultEditionCultureName
        {
            get
            {
                return (string)base[ConfigurationPropertyName.DEFAULT_EDITION_CULTURE_NAME];
            }
            set
            {
                base[ConfigurationPropertyName.DEFAULT_EDITION_CULTURE_NAME] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.DEFAULT_UI_CULTURE_NAME, DefaultValue = "fr-CA")]
        public string DefaultUICultureName
        {
            get
            {
                return (string)base[ConfigurationPropertyName.DEFAULT_UI_CULTURE_NAME];
            }
            set
            {
                base[ConfigurationPropertyName.DEFAULT_UI_CULTURE_NAME] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.SQL_CACHE_DEPENDENCY_NAME, DefaultValue = ConfigurationPropertyDefaultValue.DEFAULT_SQL_CACHE_DEPENDENCY_NAME )]
        public string SqlCacheDependencyName
        {
            get
            {
                return (string)base[ConfigurationPropertyName.SQL_CACHE_DEPENDENCY_NAME];
            }
            set
            {
                base[ConfigurationPropertyName.SQL_CACHE_DEPENDENCY_NAME] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.APPLICATION_ENVIRONMENT, DefaultValue = ApplicationEnvironment.Production)]
        public ApplicationEnvironment ApplicationEnvironment
        {
            get { return (ApplicationEnvironment)base[ConfigurationPropertyName.APPLICATION_ENVIRONMENT]; }
            set { base[ConfigurationPropertyName.APPLICATION_ENVIRONMENT] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.MAXIMUM_REVISIONS, DefaultValue=3 ) ]
        public int MaximumRevisions
        {
            get { return (int) base[ConfigurationPropertyName.MAXIMUM_REVISIONS]; }
            set { base[ConfigurationPropertyName.MAXIMUM_REVISIONS] = value; }
        }
        
        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_LOGGING, DefaultValue=true)]
        public bool EnableLogging
        {
            get { return (bool) base[ConfigurationPropertyName.ENABLE_LOGGING]; }
            set { base[ConfigurationPropertyName.ENABLE_LOGGING] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_APPROBATION, DefaultValue = false)]
        public bool EnableApprobation
        {
            get { return (bool)base[ConfigurationPropertyName.ENABLE_APPROBATION]; }
            set { base[ConfigurationPropertyName.ENABLE_APPROBATION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.INVARIANT_CULTURE_VIEWS, DefaultValue = false)]
        public bool InvariantCultureViews
        {
            get { return (bool)base[ConfigurationPropertyName.INVARIANT_CULTURE_VIEWS]; }
            set { base[ConfigurationPropertyName.INVARIANT_CULTURE_VIEWS] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.LOG_CACHE_SIZE, DefaultValue=0)]
        public int LogCacheSize
        {
            get { return (int)base[ConfigurationPropertyName.LOG_CACHE_SIZE]; }
            set { base[ConfigurationPropertyName.LOG_CACHE_SIZE] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.CLIENT_TEMPLATES)]
        public PathCollection ClientTemplates
        {
            get
            {
                return (PathCollection)base[ConfigurationPropertyName.CLIENT_TEMPLATES];
            }
            set
            {
                base[ConfigurationPropertyName.CLIENT_TEMPLATES] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.VIRTUAL_FILE_PATH_ASSEMBLIES)]
        public VirtualFilePathAssemblyCollection VirtualFilePathAssemblies
        {
            get
            {
                return (VirtualFilePathAssemblyCollection)base[ConfigurationPropertyName.VIRTUAL_FILE_PATH_ASSEMBLIES];
            }
            set
            {
                base[ConfigurationPropertyName.VIRTUAL_FILE_PATH_ASSEMBLIES] = value;
            }
        }

        [ConfigurationProperty(ConfigurationPropertyName.NODE_TYPE_ICONS)]
        public PathCollection NodeTypeIcons
        {
            get
            {
                return (PathCollection)base[ConfigurationPropertyName.NODE_TYPE_ICONS];
            }
            set
            {
                base[ConfigurationPropertyName.NODE_TYPE_ICONS] = value;
            }
        }

        [ConfigurationProperty(ConfigurationSectionName.CODE_GENERATION)]
        public CodeGenerationConfigElement CodeGeneration
        {
            get { return (CodeGenerationConfigElement)base[ConfigurationSectionName.CODE_GENERATION]; }
            set { this[ConfigurationSectionName.CODE_GENERATION] = value; }
        }

        [ConfigurationProperty(ConfigurationSectionName.FILTER_URL_CONFIGURATION)]
        public FilterUrlConfigElement FilterUrlConfiguration
        {
            get { return (FilterUrlConfigElement)base[ConfigurationSectionName.FILTER_URL_CONFIGURATION]; }
            set { this[ConfigurationSectionName.FILTER_URL_CONFIGURATION] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.ENABLE_EXTENSION_OF_APPROBATION, DefaultValue = false)]
        public bool EnableExtensionOfApprobation
        {
            get { return (bool) base[ConfigurationPropertyName.ENABLE_EXTENSION_OF_APPROBATION]; }
            set { base[ConfigurationPropertyName.ENABLE_EXTENSION_OF_APPROBATION] = value; }
        }
        [ConfigurationProperty(ConfigurationPropertyName.EDITOR_MAX_UPLOAD_FILE_SIZE, DefaultValue = 5000000)]
        public int EditorMaxUploadFileSize
        {
            get { return (int)base[ConfigurationPropertyName.EDITOR_MAX_UPLOAD_FILE_SIZE]; }
            set { base[ConfigurationPropertyName.EDITOR_MAX_UPLOAD_FILE_SIZE] = value; }
        
        }

        [ConfigurationProperty(ConfigurationPropertyName.SEND_URLDICTIONARY_REPORT, DefaultValue = false)]
        public bool SendUrlDictionaryReport
        {
            get { return (bool)base[ConfigurationPropertyName.SEND_URLDICTIONARY_REPORT]; }
            set { base[ConfigurationPropertyName.SEND_URLDICTIONARY_REPORT] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.NO_NODEPROPERTYVALUE_MODE, DefaultValue = false)]
        public bool NoNodePropertyValueMode
        {
            get { return (bool)base[ConfigurationPropertyName.NO_NODEPROPERTYVALUE_MODE]; }
            set { base[ConfigurationPropertyName.NO_NODEPROPERTYVALUE_MODE] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.DEFAULT_RESOURCE_SET, DefaultValue = "common")]
        public string DefaultResourceSet
        {
            get { return base[ConfigurationPropertyName.DEFAULT_RESOURCE_SET].ToString(); }
            set { base[ConfigurationPropertyName.DEFAULT_RESOURCE_SET] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.EMAIL_TEMPLATE_FOLDER_PATH, DefaultValue = "")]
        public string EmailTemplateFolderPath
        {
            get
            {
                var path = base[ConfigurationPropertyName.EMAIL_TEMPLATE_FOLDER_PATH].ToString();

                return !string.IsNullOrEmpty(path) ? String.Format("/{0}/", path.TrimStart('/').TrimEnd('/')) : path;
            }
            set { base[ConfigurationPropertyName.EMAIL_TEMPLATE_FOLDER_PATH] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.SEND_URLDICTIONARY_REPORT_TO, DefaultValue = "erreur@absolunet.ca")]
        public string SendUrlDictionaryReportTo
        {
            get { return base[ConfigurationPropertyName.SEND_URLDICTIONARY_REPORT_TO].ToString(); }
            set { base[ConfigurationPropertyName.SEND_URLDICTIONARY_REPORT_TO] = value; }
        }

        [ConfigurationProperty(ConfigurationPropertyName.SYNCHRONIZER_VALIDATE_HIERARCHICAL_RULES, DefaultValue = true)]
        public bool SynchronizerValidateHierarchicalRules
        {
            get { return (bool)base[ConfigurationPropertyName.SYNCHRONIZER_VALIDATE_HIERARCHICAL_RULES]; }
            set { base[ConfigurationPropertyName.SYNCHRONIZER_VALIDATE_HIERARCHICAL_RULES] = value; }
        }
    }
}
